﻿using System;
using System.Windows;
using ClientBankWPF.Entities;
using ClientBankWPF.Service;
using DevExpress.Xpf.Core;
using CryptoModule;

namespace ClientBankWPF
{
    /// <summary>
    /// Interaction logic for LogInWindow.xaml
    /// </summary>
    public partial class LogInWindow
    {
        private readonly Log log;

        public LogInWindow()
        {
            try
            {
                log = new Log();
                InitializeComponent();
            }
            catch (Exception exception)
            {
                log.WriteToLog(exception);
            }
        }

        private void ButtonCancelClick(object sender, RoutedEventArgs e)
        {
            Close();
        }

        private void ButtonEnterClick(object sender, RoutedEventArgs e)
        {
            try
            {
                if (!String.IsNullOrEmpty(textBoxLogin.Text))
                {
                    var localUsersService = new DataAccessService();
                    LocalUser localUser = localUsersService.GetLocalUser(textBoxLogin.Text);
                    if (localUser != null)
                    {
                        if (localUser.IsActive)
                        {
                            if (!String.IsNullOrEmpty(passwordBoxPassword.Password))
                            {
                                if (localUser.Password == MD5Crypto.MD5Encode(passwordBoxPassword.Password))
                                {
                                    log.Close();
                                    var mainWindow = new MainWindow(localUser);
                                    mainWindow.Show();
                                    Close();
                                }
                                else
                                {
                                    DXMessageBox.Show("Неверный пароль", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
                                }
                            }
                            else
                            {
                                DXMessageBox.Show("Пароль не введён", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
                            }
                        }
                        else
                        {
                            DXMessageBox.Show("Этот пользователь заблокирован", "Ошибка", MessageBoxButton.OK,
                                              MessageBoxImage.Error);
                        }
                    }
                    else
                    {
                        DXMessageBox.Show("Такой пользователь не зарегестрирован", "Ошибка", MessageBoxButton.OK,
                            MessageBoxImage.Error);
                    }
                }
                else
                {
                    DXMessageBox.Show("Имя пользователя не введено", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
                }
            }
            catch (Exception exception)
            {
                log.WriteToLog(exception);
            }
        }
    }
}